The invention relates generally to graphically-oriented computer operating systems and more particularly, but not by way of limitation, to a method and system for processing events in general and human interface device events in particular.
Most modern computer systems employ operating systems that support graphical user interfaces. Central to these operating systems is the use of a low-level application referred to as a “window server.” One function of a window server is to receive, annotate and route signals from external devices (e.g., human interface devices such as keyboards, pointer devices and tablets) to the appropriate application (e.g., an audio, video or multimedia application). It will be recognized that most modern operating systems treat signals generated by human interface devices as “events” which are typically embodied as data structures or objects. In accordance with this view, human interface devices generate input signals which are received by the operating system, converted to an event (ordinarily by a software routine referred to as a “device driver”) and passed to the window server. The window server, in turn, associates each event with a given user or session through a series of processing steps and routes the event to the appropriate application.
This general architecture permits a software developer to customize an application's event-driven interaction with a user. In accordance with one prior art approach, for example, a developer may use an Application Programming Interface (“API”) to obtain access to events immediately prior to their being delivered to a specified application. Event receipt may be used to trigger execution of a developer-specified routine to effect the desired (i.e., modified) human interface device response. In accordance with another prior art approach, all events sent to a window server may be intercepted and processed in accordance with customized developer routines to identify and extract those events for which specialized processing is desired.
One drawback to the former approach is that it limits event response customization to unique/specified applications. One drawback to the latter approach is that it requires developers to develop custom software to receive and identify those events they wish to process and, further, to ensure that those events are subsequently sent to the operating system's window server for conventional processing. Another drawback to the latter approach is that it requires all applications executing in such an environment to communicate with the customized event screening software rather the standard window server application.
Thus, it would be beneficial to provide a means for responding to human interface device events as they are processed by a window server—on receipt (input), immediately prior to being routed to the appropriate application (output) and at processing points within the window server between its input and output.